import hashlib
import re


def generate_id_md5(id_number):
    """
    生成身份证号码的MD5哈希值

    参数:
    id_number (str): 身份证号码字符串

    返回:
    str: 身份证号码的MD5哈希值（32位小写十六进制）
    """
    # 验证身份证号码格式（简单验证）
    if not re.match(r'^\d{17}[\dXx]$', id_number):
        raise ValueError("无效的身份证号码格式")

    # 计算MD5哈希值
    md5_hash = hashlib.md5(id_number.upper().encode('utf-8'))
    return md5_hash.hexdigest()


# 示例使用
if __name__ == "__main__":
    # 示例身份证号码（注意：请勿使用真实身份证号进行测试）
    sample_id = "542121199108080133"

    try:
        md5_value = generate_id_md5(sample_id)
        print(f"身份证号码: {sample_id}")
        print(f"MD5哈希值: {md5_value}")
        print(f"基础数据MD5哈希值: 54212119910808{md5_value}")
    except ValueError as e:
        print(e)